package reggex;

import lexer.Token;

import automaton.NondeterministicAutomaton;

/**
 * Atributos utilizados por ReggexTranslator. Es una "union" entre un autómata
 * y un token; este último se utiliza para representar a los terminales que 
 * no representan ninguna expresión regular ('+', '*', '?', '|', '(', ')').
 */
public class ReggexAttributes {
	
	private final Token token;
	
	private final NondeterministicAutomaton<Character> automaton;
	
	public ReggexAttributes(Token token) {
		this(token, null);
	}
	
	public ReggexAttributes(NondeterministicAutomaton<Character> automaton) {
		this(null, automaton);
	}
	
	private ReggexAttributes(Token token, NondeterministicAutomaton<Character> automaton) {
		this.token = token;
		this.automaton = automaton;
	}
	
	public Token getToken() {
		return token;
	}
	
	public NondeterministicAutomaton<Character> getAutomaton() {
		return automaton;
	}
}
